home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 40
/
Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso
/
Aminet
/
misc
/
emu
/
ATUtilities.lha
/
ATUtilities
/
BASIC
/
CDLOAD.BAS
< prev
next >
Wrap
BASIC Source File
|
2000-09-26
|
4KB
|
212 lines
$INCLUDE "REGNAMES.INC"
DIM names$(1500)
DIM length&(1500)
mem$=STRING$(16384,CHR$(0))
mem.seg=STRSEG(mem$)
mem.ofs=STRPTR(mem$)
COLOR 14
IF CheckVector(&H49)=0 THEN
SOUND 2000,2
PRINT "FEHLER: ATUtilities File Transfer ist nicht installiert!"
GOTO ende
END IF
GOSUB CmdAuswertung
REG %AX,(&H6*256)
CALL INTERRUPT &H49
segment=REG(%ES)
offset=REG(%DI)
DEF SEG = segment
a$=a$+CHR$(0)
FOR i=1 TO LEN(a$)
POKE offset+i-1,ASC(MID$(a$,i,1))
NEXT
REG %AX,(12*256)
CALL INTERRUPT &H49
IF REG(%BX)=10000 THEN
fl=REG(%CX)
REG %BX,fl
REG %AX,(14*256)
CALL INTERRUPT &H49
i=0 : ok=0 : xdir$=""
WHILE ok=0
x$=CHR$(PEEK(offset+i))
IF x$<>CHR$(0) THEN xdir$=xdir$+x$ ELSE ok=1
i=i+1
WEND
IF RIGHT$(xdir$,1)<>":" THEN xdir$=xdir$+"/"
COLOR 11
PRINT "Verzeichnis: ";
PRINT xdir$
PRINT ""
REG %BX,fl
REG %AX,(13*256)
CALL INTERRUPT &H49
ELSE
SOUND 2000,2
PRINT "Verzeichnis ";a$;"ist nicht vorhanden/Zugriff verweigert."
GOTO ende
END IF
FOR i=1 TO LEN(a$)
POKE offset+i-1,ASC(MID$(a$,i,1))
NEXT
REG %AX,(11*256)
CALL INTERRUPT &H49
IF REG(%BX)=10000 THEN
DEF SEG = segment
anz=REG(%CX)
COLOR 14
count=0
ofs=offset+44
FOR i=1 TO anz
typ=PEEK(ofs+36)
IF typ<>1 THEN
names$(count)=""
FOR j=0 TO 29
names$(count)=names$(count)+CHR$(PEEK(ofs+j))
NEXT
length&(count)=PEEKL(ofs+30)
count=count+1
END IF
ofs=ofs+44
NEXT
IF count>0 THEN
FOR i=0 TO count-1
n$=names$(i)
l&=length&(i)
COLOR 14
PRINT n$;
LOCATE ,40
COLOR 11
PRINT "0 %";
xn$=xdir$+n$+CHR$(0)
DEF SEG = segment
FOR j=0 TO LEN(xn$)-1
POKE offset+j,ASC(MID$(xn$,j+1,1))
NEXT
REG %AX,0
REG %BX,1
CALL INTERRUPT &H49
IF REG(%BX)=10000 THEN
fh=REG(%CX)
REG %DS,STRSEG(n$)
REG %DX,STRPTR(n$)
REG %AX,&H3C*256
REG %CX,0
CALL INTERRUPT &H21
IF (REG(%FLAGS) MOD 2)=0 THEN
pc=REG(%AX)
t&=0 : fehler=0
WHILE t&<l& AND fehler=0
REG %AX,2*256
REG %BX,fh
REG %CX,16384
CALL INTERRUPT &H49
bytes=REG(%BX)
t&=t&+bytes
IF bytes=0 AND t&<l& THEN
fehler=1
LOCATE ,40
PRINT "Fehler beim Lesen!"
ELSE
REG %AX,5*256
REG %BX,mem.seg
REG %DX,mem.ofs
REG %CX,bytes
CALL INTERRUPT &H49
REG %AX,&H40*256
REG %BX,pc
REG %CX,bytes
REG %DS,mem.seg
REG %DX,mem.ofs
CALL INTERRUPT &H21
IF (REG(%FLAGS) MOD 2)=1 THEN
fehler=1
LOCATE ,40
PRINT "Fehler beim Schreiben, Fehler";REG(%AX);"."
ELSE
p&=(100*t&)/l&
LOCATE ,39
PRINT p&;"%";
END IF
END IF
WEND
REG %AX,&H3E*256
REG %BX,pc
CALL INTERRUPT &H21
ELSE
LOCATE ,40
PRINT "Kann Datei nicht erstellen, Fehler";REG(%AX);"."
END IF
REG %AX,1*256
REG %BX,fh
CALL INTERRUPT &H49
ELSE
LOCATE ,40
PRINT "Kann Datei nicht ffnen!"
END IF
PRINT ""
IF INKEY$=CHR$(27) THEN i=count
NEXT
ELSE
SOUND 2000,2
PRINT "Das Verzeichnis enthlt keine Dateien."
END IF
ELSE
SOUND 2000,2
PRINT "Zugriff auf Amiga-Verzeichnis ";a$;"verweigert."
END IF
ende:
COLOR 7
END
CmdAuswertung:
cmd$=COMMAND$
a$=cmd$
IF a$="/?" OR a$="?" THEN
GOTO argf
END IF
IF a$="" THEN a$=STRING$(20,CHR$(0))
RETURN
argf:
SOUND 2000,2
PRINT "CDLoad - Version 1.0 Copyright (C) 1994 by Thomas Dreibholz"
PRINT ""
PRINT "CDLoad kopiere alle Dateien aus dem angegebenen Amiga-Verzeichnis"
PRINT "in das aktuelle PC-Verzeichnis."
PRINT ""
PRINT "Aufruf: CDLoad {Amiga-Verzeichnis | ? | /?}"
PRINT ""
GOTO ende
FUNCTION CheckVector(num) STATIC
REG %AX,(&H35*256)+num
CALL INTERRUPT &H21
segm=REG(%ES)
offs=REG(%BX)
DEF SEG = segm
IF (segm=0) OR (PEEK(offs)=207) THEN
CheckVector=0
ELSE
CheckVector=1
END IF
END FUNCTION
FUNCTION Format$(num,c$) STATIC
n$=STR$(num)
n$=MID$(n$,2,LEN(n$)-1)
IF LEN(n$)=1 THEN n$=c$+n$
Format$=n$
END FUNCTION